static void theme_list_icons (IconTheme *theme,
GHashTable *icons,
GQuark context);
+static gboolean theme_has_icon (IconTheme *theme,
+ const gchar *icon_name);
static void theme_list_contexts (IconTheme *theme,
GHashTable *contexts);
static void theme_subdir_load (GtkIconTheme *icon_theme,
return TRUE;
}
- if (g_hash_table_lookup_extended (priv->all_icons,
- icon_name, NULL, NULL))
- return TRUE;
+ for (l = priv->themes; l; l = l->next)
+ {
+ if (theme_has_icon (l->data, icon_name))
+ return TRUE;
+ }
if (icon_theme_builtin_icons &&
g_hash_table_lookup_extended (icon_theme_builtin_icons,
}
}
+static gboolean
+theme_has_icon (IconTheme *theme,
+ const gchar *icon_name)
+{
+ GList *l;
+
+ for (l = theme->dirs; l; l = l->next)
+ {
+ IconThemeDir *dir = l->data;
+
+ if (dir->cache)
+ {
+ if (_gtk_icon_cache_has_icon (dir->cache, icon_name))
+ return TRUE;
+ }
+ else
+ {
+ if (g_hash_table_lookup (dir->icons, icon_name) != NULL)
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
static void
theme_list_contexts (IconTheme *theme,
GHashTable *contexts)